<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
<script>
  // let list = [
  //   {
  //       id: '1',
  //       title: '节点1',
  //       parentId: '',
  //   },
  //   {
  //       id: '1-1',
  //       title: '节点1-1',
  //       parentId: '1'
  //   },
  //   {
  //       id: '1-2',
  //       title: '节点1-2',
  //       parentId: '1'
  //   },
  //   {
  //       id: '2',
  //       title: '节点2',
  //       parentId: ''
  //   },
  //   {
  //       id: '2-1',
  //       title: '节点2-1',
  //       parentId: '2'
  //   }
  // ]
  // function listToTree1(list) {
  //   let funb = (map, node) => (map[node.id] = node, node.children = [], map)
  //   let info = list.reduce(funb, {})
  //   return list.filter(node => {
  //       info[node.parentId] && info[node.parentId].children.push(node)
  //       return !node.parentId
  //   })
  // }
  // console.log(listToTree1(list))、
  const tree = [
    {
      "id": "1",
      "pid": "",
      "name": "总裁办",
      "children": [
        {
          "id": "8",
          "pid": "1",
          "name": "教研部",
          "children": [
            {
              "id": "9",
              "pid": "8",
              "name": "java"
            },
            {
              "id": "10",
              "pid": "8",
              "name": "前端"
            },
            {
              "id": "11",
              "pid": "8",
              "name": "python"
            }
          ]
        }
      ]
    },
    {
      "id": "2",
      "pid": "",
      "name": "行政部",
      "children": [
        {
          "id": "7",
          "pid": "2",
          "name": "学工"
        }
      ]
    },
    {
      "id": "3",
      "pid": "",
      "name": "人事部"
    },
    {
      "id": "4",
      "pid": "",
      "name": "财务部",
      "children": [
        {
          "id": "5",
          "pid": "4",
          "name": "出纳"
        },
        {
          "id": "6",
          "pid": "4",
          "name": "审计"
        }
      ]
    }
  ]

  function treeToList(tree) {
    let newList = []
    tree.forEach(item => {
      newList.push(item)
      // 判断item是否有children
      if (item.children) {
        const result = treeToList(item.children)
        newList = [...newList, ...result]
        delete item.children
      }
    })
    return newList
  }
  console.log(treeToList(tree))
</script>
</body>
</html>
